App({
  globalData: {
    userInfo: null,
    cart: [],
    orders: [],
    coupons: []
  },
  
  onLaunch() {
    // 小程序启动时执行
    console.log('App Launch')
    
    // 恢复本地存储的数据
    this.restoreLocalData()
    
    // 检查登录状态
    this.checkLoginStatus()
  },
  
  onShow() {
    // 小程序显示时执行
    console.log('App Show')
  },

  // 恢复本地存储的数据
  restoreLocalData() {
    try {
      // 恢复用户信息
      const userInfo = wx.getStorageSync('userInfo')
      if (userInfo) {
        this.globalData.userInfo = userInfo
      }
      
      // 恢复购物车数据
      const cart = wx.getStorageSync('cart')
      if (cart) {
        this.globalData.cart = cart
      }
      
      // 恢复订单数据
      const orders = wx.getStorageSync('orders')
      if (orders) {
        this.globalData.orders = orders
      }
      
      // 恢复优惠券数据
      const coupons = wx.getStorageSync('coupons')
      if (coupons) {
        this.globalData.coupons = coupons
      }
    } catch (error) {
      console.error('恢复本地数据失败:', error)
    }
  },
  
  checkLoginStatus() {
    // 检查用户登录状态
    try {
      const userInfo = wx.getStorageSync('userInfo')
      if (userInfo && userInfo.nickName) {
        this.globalData.userInfo = userInfo
        console.log('用户已登录:', userInfo.nickName)
      } else {
        console.log('用户未登录')
      }
    } catch (error) {
      console.error('检查登录状态失败:', error)
    }
  },

  // 用户登录
  userLogin(userInfo) {
    console.log('开始用户登录流程:', userInfo)
    
    // 设置登录状态
    userInfo.isLogin = true
    userInfo.loginTime = userInfo.loginTime || new Date().getTime()
    
    // 更新全局数据
    this.globalData.userInfo = userInfo
    
    // 保存到本地存储
    try {
      wx.setStorageSync('userInfo', userInfo)
      console.log('用户信息已保存到本地存储')
    } catch (error) {
      console.error('保存用户信息到本地存储失败:', error)
    }
    
    console.log('用户登录成功:', userInfo.nickName)
    console.log('当前全局用户信息:', this.globalData.userInfo)
  },

  // 用户退出登录
  userLogout() {
    // 清除全局数据
    this.globalData.userInfo = null
    this.globalData.cart = []
    this.globalData.orders = []
    this.globalData.coupons = []
    
    // 清除本地存储
    try {
      wx.removeStorageSync('userInfo')
      wx.removeStorageSync('cart')
      wx.removeStorageSync('orders')
      wx.removeStorageSync('coupons')
      console.log('用户退出登录成功')
    } catch (error) {
      console.error('清除本地存储失败:', error)
    }
  },
  
  addToCart(dish) {
    const price = Number(dish.price); // 价格转数字，避免运算错误
    const existingItem = this.globalData.cart.find(item => item.id === dish.id);
    if (existingItem) {
      existingItem.quantity += 1;
      existingItem.totalPrice = (price * existingItem.quantity).toFixed(2); // 新增总价计算
    } else {
      this.globalData.cart.push({
        ...dish,
        quantity: 1,
        totalPrice: (price * 1).toFixed(2) // 新增初始总价
      });
    }
    
    // 保存到本地存储
    wx.setStorageSync('cart', this.globalData.cart)
  },
  
  removeFromCart(dishId) {
    // 从购物车移除
    this.globalData.cart = this.globalData.cart.filter(item => item.id !== dishId)
    
    // 保存到本地存储
    wx.setStorageSync('cart', this.globalData.cart)
  },
  
  getCartTotal() {
    // 获取购物车总价
    return this.globalData.cart.reduce((total, item) => {
      return total + (item.price * item.quantity)
    }, 0)
  },

  // 保存订单
  saveOrder(order) {
    this.globalData.orders.push(order)
    wx.setStorageSync('orders', this.globalData.orders)
  },

  // 保存优惠券
  saveCoupon(coupon) {
    this.globalData.coupons.push(coupon)
    wx.setStorageSync('coupons', this.globalData.coupons)
  }
}) 